package main

import (
	"log"
	"time"
)

// select + channel
// 示例：
// 1. 实现超时机制

// func main() {
// 	ch := make(chan string)

// 	go func() {
// 		time.Sleep(3 * time.Second)
// 		ch <- "result"
// 	}()

// 	select {
// 	case res := <-ch:
// 		log.Println(res)
// 	case <-time.After(2 * time.Second):
// 		log.Println("timeout")
// 	}
// }

// 2. 实现心跳机制
func main() {
	heartbeat := time.NewTicker(10 * time.Second)
	defer heartbeat.Stop()

	ch := make(chan int)

	for {
		select {
		case v := <-ch:
			log.Println(v)
		case <-heartbeat.C:
			log.Printf("cool")
		}
		log.Println("waiting...")
	}
}
